Skip to content

Go 语言中有不同方法用于安全读写共享变量的对比,整理成表格形式如下

方法描述使用场景
sync.Mutex互斥锁,确保同一时间只有一个 goroutine 可以访问共享资源。适用于需要保护的资源或代码块访问量较大的情况。
sync.RWMutex读写互斥锁,允许多个读操作,但写操作会阻塞其他读写操作。适用于读多写少的场景,可以提高读操作的并发性。
sync/atomic提供原子操作,用于管理简单数据类型的并发访问。适用于简单数据类型(如整数、指针)的并发更新。
Channel提供数据传递的方式,避免直接访问共享内存。适用于 goroutine 间的通信和数据传递。
sync.Once保证某个操作只执行一次。适用于只需要执行一次的初始化操作,例如单例模式的初始化。

木川工作室 (微信:mcmc2024)